package siscom.componentes;

import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

/**
 *
 * @author Carlos Ribeiro
 */
public class SisDocument extends PlainDocument {

    private boolean upperCase = true;
    private boolean apenasNumeros = false;
    private int tamanhoMaximo = 0;

    @Override
    public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
        if (isApenasNumeros()) {
            for (int i = 0; i < str.length(); i++) {
                if (Character.isDigit(str.charAt(i)) == false) {
                    return;
                }
            }
        }
        if (getLength() + str.length() > tamanhoMaximo && tamanhoMaximo > 0) {
            return;
        }
        if (str == null) {
            return;
        }
        if (upperCase) {
            super.insertString(offs, str.toUpperCase(), a);
            return;
        }

        super.insertString(offs, str, a);
    }

    /**
     * @return the upperCase
     */
    public boolean isUpperCase() {
        return upperCase;
    }

    /**
     * @param upperCase the upperCase to set
     */
    public void setUpperCase(boolean upperCase) {
        this.upperCase = upperCase;
    }

    /**
     * @return the apenasNumeros
     */
    public boolean isApenasNumeros() {
        return apenasNumeros;
    }

    /**
     * @param apenasNumeros the apenasNumeros to set
     */
    public void setApenasNumeros(boolean apenasNumeros) {
        this.apenasNumeros = apenasNumeros;
    }

    /**
     * @return the tamanhoMaximo
     */
    public int getTamanhoMaximo() {
        return tamanhoMaximo;
    }

    /**
     * @param tamanhoMaximo the tamanhoMaximo to set
     */
    public void setTamanhoMaximo(int tamanhoMaximo) {
        this.tamanhoMaximo = tamanhoMaximo;
    }
}
